有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将一个int和string数组合并到第三个数组中

There are 2 arrays, one of int and one of Strings (words) ; sort both of them and then print it in a way that at odd places it should be words and at even numbers.

这是我的代码:

import java.util.*;
public class JavaApplication4 {


    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int num[]=new int[10];
        String str[]=new String[10];
        String str1[]=new String[20];
        for(int i=0; i<5; i++)//for taking strings
        {
            str[i]=in.next();
        }
        for(int i=0; i<5; i++)//for taking nums
        {
            num[i]=in.nextInt();
        }
        for(int i=0; i<5; i++)
        {
            System.out.println("The String are "+str[i]);
        }
        for(int i=0; i<5; i++)
        {
            System.out.println("The num are "+num[i]);
        }
         for (int i = 0; i < 5; i++) //for sorting nums
        {
            for (int j = i + 1; j < 5; j++) 
            {
                if (num[i]>(num[j])) 
                {
                    int temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++)// for sorting strs
        {
            for (int j = i + 1; j < 5; j++) 
            {
                if (str[i].compareTo(str[j])>0) 
                {
                    String temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                }
            }
        }
        System.out.println("The sorted strings are:");
        for(int i=0; i<10; i++)//for merging both
        {
            if((i+1)%2==0)
            {
                int k=0;
                str1[i]=String.valueOf(num[k]);
                 System.out.println("The String are "+str1[i]);
                k++;
            }
            else
            {
                int j=0;
                str1[i]=str[j];
                 System.out.println("The String are "+str1[i]);
                j++;
            }


        }
      /*   for(int i=0; i<10; i++)
        {
            System.out.println("The String are "+str1[i]);
        }
        */
    }
}

我得到的输出是:

The sorted strings are:
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1

它只取两个数组的第一个元素


共 (3) 个答案

  1. # 1 楼答案

    应该在循环之前,而不是在循环内部,将kj初始化为0

        int k=0;
        int j=0;
        for(int i=0; i<10; i++)//for merging both
        {
            if((i+1)%2==0)
            {
                str1[i]=String.valueOf(num[k]);
                 System.out.println("The String are "+str1[i]);
                k++;
            }
            else
            {
                str1[i]=str[j];
                 System.out.println("The String are "+str1[i]);
                j++;
            }
        }
    
  2. # 2 楼答案

    其他人指出了根本原因。除此之外,为什么要用容量10(和20)初始化数组num[]{}{},这是所需容量5(和10)的两倍

    另一个问题是str1[]的名字非常糟糕

  3. # 3 楼答案

    您可以使用Arrays类对数组进行排序

    String[] strArray = new String[] {"a","z","q","p"};
    Arrays.sort(strArray);
    

    同样,尝试使用第二个数组

    现在,通过添加两个数组的大小来声明另一个数组:

    String[] newArray = new String[sum];
    int j=0;
    for(int i=0;i<newArray.length;i+=2)
    {
        newArray[i]=strArray[j];
        newArray[i+1] = otherArray[j++];
    }